﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DTO;

namespace InterfacesInstanceClustering
{
    public interface IVectorizer
    {
        /// <summary>
        /// The host which manages plugins
        /// </summary>
        IInstanceClusteringHost PluginHost { get; set; }
        /// <summary>
        /// The name of the plugin
        /// </summary>
        string PluginName { get; }
        /// <summary>
        /// The description of the plugin
        /// </summary>
        string PluginDescription { get; }
        /// <summary>
        /// The user control of the plugin
        /// </summary>
        IVectorizerUC PluginUserControl { get; }
        /// <summary>
        /// Initialize needed things for the plugin
        /// </summary>
        void Initialize();
        /// <summary>
        /// Dispose the plugin
        /// </summary>
        void PluginDispose();
        /// <summary>
        /// Vectorize a webpage
        /// </summary>
        /// <param name="webpageID">The id of webage</param>
        /// <param name="webpageAnnotatedKeyword">Annotated keywords of webpage</param>
        /// <param name="splitWebtagList">Webtags of webpage which has been segmented</param>
        /// <param name="metaStr">List of meta string</param>
        /// <param name="splitWebpageTitle">Webpage title which has been segmented</param>
        /// <param name="commonTerms">Common terms which were chosen</param>
        /// <returns>The result vector</returns>
        Vector Vectorize(int webpageID
            , List<string> webpageAnnotatedKeyword
            , List<Webtag> splitWebtagList
            , List<string> metaStr
            , string splitWebpageTitle
            , List<string> commonTerms);
    }
}
